home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK2.toast / Development Kits (Disc 2) / QuickTake Digital Camera / MyQuickTakeApp 1.0.2 ƒ / Headers / QuickTakePICT.h < prev   
Encoding:
C/C++ Source or Header  |  1994-11-26  |  5.2 KB  |  132 lines  |  [TEXT/MMCC]

  1. /*
  2.     File:        QuickTakePICT.h
  3.     
  4.     Contains:    My Application Shell.
  5.  
  6.     Written by:    John Wang
  7.  
  8.     Copyright:    © 1994 by Apple Computer, Inc., all rights reserved.
  9.  
  10.     Change History (most recent first):
  11.  
  12.         <1>        09/30/94    JW        New.
  13.  
  14.     To Do:
  15.     
  16. */
  17.  
  18. #ifdef THINK_C
  19. #define        applec
  20. #endif
  21.  
  22. /* ------------------------------------------------------------------------- */
  23.  
  24. //    Flags
  25. #define    kQktkRotationBits            (0x3)    // Mask for the rotation bits (see below).
  26. #define kQktkVerticalImage            1        // Vertical (width < height) image (low order bit of rotation bits).
  27. #define    kImgRot0                    0        // 0 degree rotation (width > height).
  28. #define    kImgRot90                    1        // 90 degree counterclockwise rotation.
  29. #define    kImgRot180                    2        // 180 degree rotation.
  30. #define    kImgRot270                    3        // 270 degree counterclockwise rotation.
  31. #define    kQktkStdResImage            (1<<2)    // Standard resolution QuickTake image (320x240).
  32. #define    kQktkHiResImage                (1<<3)    // High resolution QuickTake image (640x480).
  33. #define    kQktkThumbnailImage            (1<<8)    // Thumbnail image.
  34. #define kQktkHasColorMatrix            (1<<9)    // Camera color matrix is included in header.
  35. #define kQktkHasCompressionTable    (1<<10)    // Compression table is included in header.
  36.  
  37. //    Structs
  38. struct PictFileHeader {
  39.     long            signature;            //    'qktk' for Venus or 'qktn' for Nimbus
  40.     short            version;            //    file format is version = 0 for both Venus and Nimbus
  41.     short            flags;                //    kQktkStdResImage or kQktkHiResImage flags valid only
  42.     long            thumbnailOffset;    //    Offset to thumbnail or 0 if not present.
  43. };
  44. typedef        struct PictFileHeader PictFileHeader;
  45.  
  46. struct ImageHeader
  47. {
  48.     long            signature;            //    'qktk' for Venus or 'qktn' for Nimbus
  49.     short            version;            //    file format is version = 0 for both Venus and Nimbus
  50.     short            flags;                //    See above constants.  Not set: kQktkHasColorMatrix and kQktkHasCompressionTable.
  51.     long            dataSize;            //    Size is fixed size for Venus but variable for Nimbus.
  52. };
  53. typedef struct ImageHeader ImageHeader;
  54.  
  55. struct ImageHeader_CM
  56. {
  57.     long            signature;            //    'qktk' for Venus or 'qktn' for Nimbus
  58.     short            version;            //    version = 1    for Venus, version = 2 for Nimbus
  59.     short            flags;                //    See above constants.  Set: kQktkHasColorMatrix.
  60.     double            colorMatrix[3*4];
  61.     long            dataSize;            //    Size is fixed for Venus but variable for Nimbus.
  62. };
  63. typedef struct ImageHeader_CM ImageHeader_CM;
  64.  
  65. struct ImageHeader_CT100
  66. {
  67.     long            signature;            //    'qktk' for Venus or 'qktn' for Nimbus
  68.     short            version;            //    version = 1    for Venus, version = 2 for Nimbus
  69.     short            flags;                //    See above constants.  Set: kQktkHasCompressionTable.
  70.     unsigned short    compTableSize;
  71.     char            compTable[kCmDecompTableSize100];
  72.     long            dataSize;            //    Size is fixed for Venus but variable for Nimbus.
  73. };
  74. typedef struct ImageHeader_CT100 ImageHeader_CT100;
  75.  
  76. struct ImageHeader_CT150
  77. {
  78.     long            signature;            //    'qktk' for Venus or 'qktn' for Nimbus
  79.     short            version;            //    version = 1    for Venus, version = 2 for Nimbus
  80.     short            flags;                //    See above constants.  Set: kQktkHasCompressionTable.
  81.     unsigned short    compTableSize;
  82.     char            compTable[kCmDecompTableSize150];
  83.     long            dataSize;            //    Size is fixed for Venus but variable for Nimbus.
  84. };
  85. typedef struct ImageHeader_CT150 ImageHeader_CT150;
  86.  
  87. struct ImageHeader_CM_CT100
  88. {
  89.     long            signature;            //    'qktk' for Venus or 'qktn' for Nimbus
  90.     short            version;            //    version = 1    for Venus, version = 2 for Nimbus
  91.     short            flags;                //    See above constants.  Set: kQktkHasColorMatrix and kQktkHasCompressionTable.
  92.     double            colorMatrix[3*4];
  93.     unsigned short    compTableSize;
  94.     char            compTable[kCmDecompTableSize100];
  95.     long            dataSize;            //    Size is fixed for Venus but variable for Nimbus.
  96. };
  97. typedef struct ImageHeader_CM_CT100 ImageHeader_CM_CT100;
  98.  
  99. struct ImageHeader_CM_CT150
  100. {
  101.     long            signature;            //    'qktk' for Venus or 'qktn' for Nimbus
  102.     short            version;            //    version = 1    for Venus, version = 2 for Nimbus
  103.     short            flags;                //    See above constants.  Set: kQktkHasColorMatrix and kQktkHasCompressionTable.
  104.     double            colorMatrix[3*4];
  105.     unsigned short    compTableSize;
  106.     char            compTable[kCmDecompTableSize150];
  107.     long            dataSize;            //    Size is fixed for Venus but variable for Nimbus.
  108. };
  109. typedef struct ImageHeader_CM_CT150 ImageHeader_CM_CT150;
  110.  
  111. struct ThumbnailHeader
  112. {
  113.     long            signature;            //    'qktk' for Venus or 'qktn' for Nimbus
  114.     short            version;            //    version = 1    for Venus, version = 2 for Nimbus
  115.     short            flags;                //    same as TQuickTakeImageHeader with kQktkThumbnailImage set.
  116.     long            dataSize;            //    Size of thumbnail data (2400 for Venus and Nimbus)
  117. };
  118. typedef struct ThumbnailHeader ThumbnailHeader;
  119.  
  120. /* ------------------------------------------------------------------------- */
  121.  
  122. OSErr    MakeQuickTakePicture(ImageHeader *imageHeader, Ptr imageBuffer,
  123.                 CmColorMatrixPtr colorMatrix, BufferPtr decompTable, PicHandle *pict);
  124. OSErr    LoadThumbnailPict(FSSpec *theFSSpec, PicHandle *pict);
  125. OSErr    LoadPict(FSSpec *theFSSpec, PicHandle *pict, Handle *thumbnail,
  126.                     ThumbnailHeader *thumbnailHeader, CmPictureInfo *pictureInfo);
  127. OSErr    SavePict(FSSpec *theFSSpec, OSType creatorType, PicHandle pict, Handle thumbnail,
  128.                     ThumbnailHeader *thumbnailHeader, CmPictureInfo *pictureInfo);
  129. OSErr    GetFileHeaderFromPict(PicHandle pict, PictFileHeader *fileHeader);
  130. OSErr    GetImageHeaderFromPict(PicHandle pict, ImageHeader *imageHeader);
  131. OSErr    GetImageBufferFromPict(PicHandle pict, Ptr *imageBuffer);
  132. void    DrawPictureWithProgress(PicHandle pict, Rect *pictRect);